使用 3D 轨迹列表框 (Trajectory List Box 3D) 节点

3D 轨迹列表框 (Trajectory List Box 3D) 节点可用于创建沿轨迹排列的项的可滚动列表。

Kanzi Studio 有几种类型的轨迹供您使用。您需要不同类型的轨迹时,可以在第三方工具中创建样条轨迹并将其导入到Kanzi Studio 工程中。请参阅轨迹

3D 轨迹列表框 (Trajectory List Box 3D) 节点上的项会按您将它们添加到 3D 轨迹列表框 (Trajectory List Box 3D) 节点中时所用的顺序显示。要选择 3D 轨迹列表框 (Trajectory List Box 3D) 节点中的项,请点击或轻敲该项。

轨迹尺寸确定了点击和拖动手势的交互区域。如果轨迹过小,用户将不能选择 3D 轨迹列表框 (Trajectory List Box 3D) 节点中的项。为避免这种情况,要确保轨迹足够大。请参阅轨迹

所有列表框节点(网格列表框 (Grid List Box) 节点和3D 轨迹列表框 (Trajectory List Box 3D) 节点)中的项不是其子节点,即使在 Kanzi Studio 中将项添加到列表框时看似是子节点。由于列表框项不是列表框的子节点,您不能使用路径或别名从列表框的外部引用这些项。要从列表框项引用到列表框外的对象,应使用绑定和别名。请参阅绑定到 3D 轨迹列表框 (Trajectory List Box 3D) 节点以外的属性以及从 3D 轨迹列表框 (Trajectory List Box 3D) 节点导航到 页面 (Page) 节点

3D 轨迹列表框 (Trajectory List Box 3D) 节点是 轨迹布局 (Trajectory Layout) 节点的交互版本。请参阅使用轨迹布局 (Trajectory Layout) 节点

关于如何使用 3D 轨迹列表框 (Trajectory List Box 3D) 节点创建交互可滚动项列表,请参阅轨迹列表框示例

对于 3D 轨迹列表框 (Trajectory List Box 3D) 节点,您可以:

创建 3D 轨迹列表框 (Trajectory List Box 3D) 节点

要创建 3D 轨迹列表框 (Trajectory List Box 3D) 节点:

  1. 工程 (Project)按下 Alt 并右键点击要在其中创建 3D 轨迹列表框 (Trajectory List Box 3D) 节点的那个节点,然后选择 3D 轨迹列表框 (Trajectory List Box 3D)
    请注意,您只能在 3D 节点内创建 3D 轨迹列表框 (Trajectory List Box 3D) 节点。
    建议

    要查看轨迹,在预览 (Preview) 中点击 进入分析 (Analyze) 模式,右键点击 并选择调试对象 (Debug objects)

  2. 工程 (Project) 中,将项添加到3D 轨迹列表框 (Trajectory List Box 3D) 节点。
    使用数据源为 列表框 (List Box) 节点添加项。请参阅使用数据源
    例如,要创建相册列表,请添加多个代表列表中的相册的节点。请参阅使用列表框项容器 (List Box Item Container) 预设件
    添加项时,3D 轨迹列表框 (Trajectory List Box 3D) 节点将其沿 3D 轨迹列表框 (Trajectory List Box 3D) 节点使用的轨迹进行排列。
    要在 3D 轨迹列表框 (Trajectory List Box 3D) 节点中浏览项,请在预览 (Preview) 中点击项并将其拖到 3D 轨迹列表框 (Trajectory List Box 3D) 节点中。

  3. (可选) Kanzi Studio 默认创建并使用圆形轨迹。您可以使用角度、弧形、圆形、椭圆、直线、矩形、螺旋、样条或梯形轨迹。请参阅轨迹

微调 3D 轨迹列表框 (Trajectory List Box 3D) 节点的机制

您可以微调列表框的机制。您可以将列表框设为:

嵌套3D 轨迹列表框 (Trajectory List Box 3D)节点

您可以嵌套3D 轨迹列表框 (Trajectory List Box 3D) 节点,以在3D 轨迹列表框 (Trajectory List Box 3D) 节点中创建3D 轨迹列表框 (Trajectory List Box 3D) 节点,其中每个都可以独立滚动。例如,您可以创建用于在包含相册集的圆形轨迹 3D 轨迹布局 (Trajectory Layout 3D) 节点上滚动的 3D 轨迹列表框 (Trajectory List Box 3D)

3D 轨迹列表框 (Trajectory List Box 3D) 节点中使用滚动轴 (Scroll Axis) 属性设置用户可以滚动的轴。

要嵌套3D 轨迹列表框 (Trajectory List Box 3D) 节点:

  1. 创建3D 轨迹列表框 (Trajectory List Box 3D) 节点。请参阅创建 3D 轨迹列表框 (Trajectory List Box 3D) 节点
    例如,使用圆形轨迹创建圆形路径。请参阅使用圆形轨迹
  2. 选择上一步创建的 3D 轨迹列表框 (Trajectory List Box 3D) 节点,在属性 (Properties) 中将滚动轴 (Scroll Axis) 属性设置为要节点滚动的轴。
    例如,要将 3D 轨迹列表框 (Trajectory List Box 3D) 节点设置成在 x 轴上滚动,将滚动轴 (Scroll Axis) 属性的 X 属性字段设置为 1。
  3. 创建要在上一步中创建的 3D 轨迹列表框 (Trajectory List Box 3D) 节点中嵌套的 3D 轨迹列表框 (Trajectory List Box 3D) 节点。
    例如,如果要创建相册的多个嵌套 3D 轨迹列表框 (Trajectory List Box 3D) 节点,在预设件 (Prefabs) 中创建 3D 轨迹列表框 (Trajectory List Box 3D) 节点,使用默认圆形轨迹,并将滚动轴 (Scroll Axis) 属性的X 属性字段设置为 1,以将该节点设置为在 x 轴上滚动。
  4. 工程 (Project) 中,将项添加到3D 轨迹列表框 (Trajectory List Box 3D) 节点。
    例如,从预设件 (Prefabs) 拖动多个表示相册列表的 3D 轨迹列表框 (Trajectory List Box 3D) 预设件,在每个嵌套 3D 轨迹列表框 (Trajectory List Box 3D) 节点中添加表示各列表中相册的项。
    您可以使用数据源添加项到3D 轨迹列表框 (Trajectory List Box 3D)。请参阅使用数据源

绑定到 3D 轨迹列表框 (Trajectory List Box 3D) 节点以外的属性

要将列表框项的属性绑定到列表框外的节点的属性,应使用别名。

例如,如果您有一个3D 网格列表框 (Grid List Box 3D) 节点或具有3D 文本块 (Text Block 3D) 节点项的3D 轨迹列表框 (Trajectory List Box 3D) 节点,并要将3D 文本块 (Text Block 3D) 节点的文本 (Text) 属性值设置为不在列表框中的3D 空节点 (Empty Node 3D) 节点属性值:

  1. 工程 (Project) 中,按下 Alt 并右键点击包含要绑定到其中的属性的节点并选择别名 (Alias)。请参阅使用别名
    例如,为3D 空节点 (Empty Node 3D) 节点创建一个别名。
  2. 字典 (Dictionaries) 中确保您创建的别名在列表框节点可以访问的资源字典中。
    例如,将所有别名放到屏幕 (Screen) 节点的资源字典中,或者在列表框节点中创建资源字典,并将别名放在该资源字典中。请参阅使用资源字典
  3. 创建绑定:
    1. 工程 (Project) 中,选择列表框节点内的节点,您要从其绑定至该列表框节点外的一个节点。
    2. 属性 (Properties) 中添加绑定 (Bindings) 属性并使用别名创建绑定,以绑定到列表框节点外的节点中的属性。
      例如,在3D 文本块 (Text Block 3D) 节点中,使用您在第一步中创建的别名创建对3D 空节点 (Empty Node 3D) 节点的绑定。请参阅绑定表达式参考
      例如,使用以下绑定表达式:
      {#Empty Node 3D/TextBlockConcept.Text}

      3D 文本块 (Text Block 3D) 节点中的文本 (Text) 属性从3D 空节点 (Empty Node 3D) 节点获取文本 (Text) 属性的值。
    3. 点击保存 (Save)

3D 轨迹列表框 (Trajectory List Box 3D) 节点导航到 页面 (Page) 节点

要从列表框节点中的节点导航到页面 (Page) 节点,应使用别名。例如,如果您使用网格列表框 (Grid List Box)3D 轨迹列表框 (Trajectory List Box 3D) 节点创建地址簿,并想要显示页面 (Page) 节点中的地址簿条目的内容。

要从列表框节点导航到页面 (Page) 节点:

  1. 工程 (Project)按下 Alt 并右键点击您要导航至其的每个页面 (Page) 节点并选择别名 (Alias)
    Kanzi Studio 即会创建指向创建它时所在的节点的别名,并将别名放到最近的资源字典中。
  2. 字典 (Dictionaries) 中确保您创建的别名在列表框节点可以访问的资源字典中。
    例如,将所有别名放到屏幕 (Screen) 节点的资源字典中,或者在列表框节点中创建资源字典,并将别名放在该资源字典中。请参阅使用资源字典
  3. 添加并设置导航至页面 (Navigate to Page) 动作:
    1. 工程 (Project) 的列表框节点中选择该节点,其中包含您要用于导航到第一步中为其创建别名的一个页面 (Page) 节点的触发器。
    2. 在要用于导航到页面 (Page) 节点的触发器的节点组件 (Node Components) > 触发器 (Triggers) 部分添加导航至页面 (Navigate to Page) 动作。
    3. 导航至页面 (Navigate to Page) 设置窗口中,将项 (Item) 属性设置为要导航到的页面 (Page) 节点的别名,并点击保存 (Save)
      所有别名都以 # 号开头。

预览 (Preview) 中,点击包含导航至页面 (Navigate to Page) 动作的节点,即会激活动作中选定的页面 (Page) 节点。

在用户与 3D 轨迹列表框 (Trajectory List Box 3D) 节点交互时响应

使用 列表框 (List Box) 触发器在用户与 3D 轨迹列表框 (Trajectory List Box 3D) 节点交互时响应。例如,您可以设置用户滚动列表框时 3D 轨迹列表框 (Trajectory List Box 3D) 的外观。

您可通过 3D 轨迹列表框 (Trajectory List Box 3D) 节点使用这些列表框 (List Box) 触发器:

要使用带 3D 轨迹列表框 (Trajectory List Box 3D) 节点的列表框 (List Box) 触发器:

  1. 创建3D 轨迹列表框 (Trajectory List Box 3D) 节点并向其添加项。请参阅创建 3D 轨迹列表框 (Trajectory List Box 3D) 节点
  2. 定义您想通过列表框 (List Box) 触发器设置的行为。
    例如,创建状态机,您可以定义状态以设置 3D 轨迹列表框 (Trajectory List Box 3D) 节点在列表框: 滚动已开始 (List Box: Scroll Started)列表框: 滚动已完成 (List Box: Scroll Finished) 触发器被触发时的外观。请参阅创建状态机
  3. 添加和配置列表框 (List Box) 触发器:
    1. 工程 (Project) 中,选择要为其添加触发器的列表框 (List Box) 节点,并在节点组件 (Node Components) > 触发器 (Triggers) 部分添加其中一个列表框 (List Box) 触发器。
      例如,在工程 (Project) 中选择您在此程序开始时创建的 3D 轨迹列表框 (Trajectory List Box 3D) 节点,并在节点组件 (Node Components) 中添加列表框: 滚动已开始 (List Box: Scroll Started) 触发器。
    2. 在您上一步创建的触发器中,选择添加 (Add) 下拉菜单中的动作,并配置该动作。
      例如,选择转到状态 (Go to State) 动作并在动作设置中设置:
      • 项 (Item) 为您在此步骤开始时创建的 3D 轨迹列表框 (Trajectory List Box 3D) 节点
      • 状态 (State) 为设置 3D 轨迹列表框 (Trajectory List Box 3D) 节点在 列表框: 滚动已开始 (List Box: Scroll Started) 触发器被触发时的外观的状态。
  4. 重复上一步,以添加并配置更多列表框 (List Box) 触发器。
    例如,添加列表框: 滚动已完成 (List Box: Scroll Finished) 触发器。在触发器的转到状态 (Go to State) 动作中,将状态 (State) 设置为设置当触发器被处罚时节点外观的状态。

预览 (Preview) 中,当滚动您创建的 3D 轨迹列表框 (Trajectory List Box 3D) 节点时,您添加的触发器被触发。

轨迹列表框示例

本示例显示如何使用3D 轨迹列表框 (Trajectory List Box 3D) 节点创建项的交互式可滚动列表。本示例使用动画实现具有选择效果的简单照片库。

3D 轨迹列表框 (Trajectory List Box 3D) 节点、其圆形轨迹 (Circle Trajectory)3D 轨迹列表框 (Trajectory List Box 3D) 中显示的内容以及突出显示居中照片的动画在 Kanzi Studio 中创建。高亮动画启动的时间点根据滚动速度和轨迹列表框组件产生的用户输入事件中可用的焦点项数据来定义。

本示例中的3D 轨迹列表框 (Trajectory List Box 3D) 节点使用以下功能:

您可以在 <KanziWorkspace>/Examples/Trajectory_list_box 目录中找到本示例。

在 API 中使用 3D 轨迹列表框 (Trajectory List Box 3D) 节点

要创建 3D 轨迹列表框:

//创建一个名为 MyListBox 的 3D 轨迹列表框。
TrajectoryListBox3DSharedPtr trajectoryListBox = TrajectoryListBox3D::create(domain, "MyListBox");

要设置您希望列表框使用的轨迹:

//创建一个名为 Circle 的半径为 4 个设备无关单位的圆形轨迹。
TrajectorySharedPtr trajectory = Trajectory::createCircle(Vector3(), Vector3::up(), 0.0f, 4.0f, domain, "Circle");

//设置列表框,以使其使用轨迹。
trajectoryListBox->setTrajectory(trajectory);
//增大布局尺寸,以涵盖整个轨迹。
trajectoryListBox->setWidth(10.0f);
trajectoryListBox->setDepth(10.0f);
trajectoryListBox->setHeight(3.0f);

要将项添加到列表框:

//创建立方体网格并将它们添加为轨迹列表框的项。
//轨迹上的项会按您将它们添加到列表中时所用的顺序显示。
Model3DSharedPtr item1 = Model3D::createCube(domain, "item1", 1.0f, ThemeRed);
Model3DSharedPtr item2 = Model3D::createCube(domain, "item2", 1.0f, ThemeGreen);
Model3DSharedPtr item3 = Model3D::createCube(domain, "item3", 1.0f, ThemeBlue);
Model3DSharedPtr item4 = Model3D::createCube(domain, "item4", 1.0f, ThemeOrange);
Model3DSharedPtr item5 = Model3D::createCube(domain, "item5", 1.0f, ThemeYellow);
trajectoryListBox->addItem(item1);
trajectoryListBox->addItem(item2);
trajectoryListBox->addItem(item3);
trajectoryListBox->addItem(item4);
trajectoryListBox->addItem(item5);

要使列表框循环:

//使列表框循环。将所有项都置于轨迹上,以使它们均匀排布。
trajectoryListBox->setLooping(true);

要设置选择行为:

//通过点击项将它们置于轨迹的中心。
trajectoryListBox->setSelectionBehavior(ListBoxConcept::SelectionBehaviorBringToCenter);
//将被点击项位于距离轨迹起点四分之一处时更改位置。
trajectoryListBox->setCursorOffset(0.25f);

有关详细信息,请参阅 API reference中的 TrajectoryListBox3D 类。

3D 轨迹列表框 (Trajectory List Box 3D) 属性类型

要查看 3D 轨迹列表框 (Trajectory List Box 3D) 节点可用属性类型的完整列表,请参阅 Trajectory list box 3D

另请参阅

使用网格列表框 (Grid List Box) 节点

使用轨迹布局 (Trajectory Layout) 节点

使用 3D 轨迹列表框 (Trajectory List Box 3D) 节点

使用弧形轨迹

使用圆形轨迹

使用椭圆轨迹

使用直线轨迹

使用矩形轨迹

使用螺旋轨迹

使用样条轨迹

使用梯形轨迹

轨迹

使用绑定

使用列表框项容器 (List Box Item Container) 预设件